package com.huike.web.controller.system;

import com.huike.clues.service.ISysDataService;
import com.huike.common.core.domain.entity.SysDictDataDTO;
import com.huike.common.core.page.TableDataInfo;
import com.huike.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Description 数据字典数据信息接口
 * @Date 2023-10-10
 */

@RestController
@RequestMapping("/system/dict")
@Api(tags = "数据字典数据信息管理")
@Slf4j
public class SysDictDataController {

    @Resource
    private ISysDataService sysDataService;

    @GetMapping("/data/type/{dictType}")
    @ApiOperation("查询字典数据信息")
    public Result<List<SysDictDataDTO>> findList(@PathVariable String dictType) {
        log.info("开始执行查询字典数据信息，{}", dictType);
        // 调用业务进行方法查询
        List<SysDictDataDTO> sysDictDataDTOList = sysDataService.list(dictType);
        return Result.success(sysDictDataDTOList);
    }

    /**
     * 字典列表接口
     *
     * @param sysDictDataDTO
     * @return
     */
    @GetMapping("/data/list")
    @ApiOperation("字典列表接口")
    public TableDataInfo<List<SysDictDataDTO>> findDictionaryList(SysDictDataDTO sysDictDataDTO) {
        log.info("开始执行字典列表接口，{}", sysDictDataDTO);
        // 调用业务实现查询字典列表方法
        TableDataInfo<List<SysDictDataDTO>> sysDictDataDTOList = sysDataService.findList(sysDictDataDTO);
        // 返回列表
        return sysDictDataDTOList;
    }

    /**
     * 查询字典数据详细数据
     *
     * @param dictCode
     * @return
     */
    @GetMapping("/data/{dictCode}")
    @ApiOperation("查询字典数据详细")
    public Result<SysDictDataDTO> dictionaryDetail(@PathVariable Integer dictCode) {
        log.info("开始查询字典数据详细，{}", dictCode);
        SysDictDataDTO sysDictDataDTO = sysDataService.findDetail(dictCode);
        return Result.success(sysDictDataDTO);
    }

    /**
     * 新增字典数据
     *
     * @param dict
     * @return
     */
    @PostMapping("/data")
    @ApiOperation("新增字典数据")
    public Result addDictionary(@RequestBody SysDictDataDTO dict) {
        log.info("开始执行新增字典数据接口,{}", dict);
        // 调用业务实现新增字典方法
        sysDataService.addDictionary(dict);
        return Result.success();
    }

    /**
     * 修改保存字典数据接口
     *
     * @param dict
     * @return
     */
    @PutMapping("/data")
    @ApiOperation("修改保存字典数据")
    public Result updateDictionary(@RequestBody SysDictDataDTO dict) {
        log.info("开始执行修改保存字典数据接口，{}", dict);
        // 调用业务实现修改保存方法
        sysDataService.updateDictionary(dict);
        return Result.success();
    }

    /**
     * 删除字典数据接口
     * @param dictCodes
     * @return
     */
    @DeleteMapping("/data/{dictCodes}")
    @ApiOperation("删除字典数据接口")
    public Result deleteDictionary(@PathVariable String dictCodes) {
        log.info("开始执行删除字典数据接口，{}", dictCodes);
        // 调用业务实现删除字典数据方法
        sysDataService.deleteDictionary(dictCodes);
        return Result.success();
    }

    /**
     * 字典导出接口
     * @param sysDictDataDTO
     * @return
     */
//    @GetMapping("/data/export")
//    @ApiOperation("字典导出接口")
//    public Result<String> export(SysDictDataDTO sysDictDataDTO, HttpServletResponse response){
//        log.info("开始执行字典导出接口....{}",sysDictDataDTO);
//        sysDataService.exportData(sysDictDataDTO,response);
//        return Result.success();
//    }

}
